/**
 * 节点相关 API
 */

import { get, post, del } from '@/utils/request'
import type {
  NodeStatus,
  NodeStatistics,
  NodeRegistrationToken,
  CreateNodeRegistrationTokenRequest,
  NodeTaskInfo,
} from '@/types'

/**
 * 获取在线节点列表
 */
export function getOnlineNodes(): Promise<NodeStatus[]> {
  return get<NodeStatus[]>('/api/Node/online')
}

/**
 * 获取所有节点列表
 */
export function getAllNodes(): Promise<NodeStatus[]> {
  return get<NodeStatus[]>('/api/Node')
}

/**
 * 根据 ID 获取节点信息
 */
export function getNodeById(nodeId: string): Promise<NodeStatus> {
  return get<NodeStatus>(`/api/Node/${nodeId}`)
}

/**
 * 获取节点统计信息
 */
export function getNodeStatistics(): Promise<NodeStatistics> {
  return get<NodeStatistics>('/api/Node/statistics')
}

/**
 * 获取节点当前任务
 */
export function getNodeTasks(nodeId: string): Promise<NodeTaskInfo[]> {
  return get<NodeTaskInfo[]>(`/api/Node/${nodeId}/tasks`)
}

/**
 * 获取节点注册令牌列表
 */
export function getRegistrationTokens(): Promise<NodeRegistrationToken[]> {
  return get<NodeRegistrationToken[]>('/api/NodeRegistration/token')
}

/**
 * 创建节点注册令牌
 */
export function createRegistrationToken(
  data: CreateNodeRegistrationTokenRequest
): Promise<NodeRegistrationToken> {
  return post<NodeRegistrationToken>('/api/NodeRegistration/token', data)
}

/**
 * 删除节点注册令牌
 */
export function deleteRegistrationToken(token: string): Promise<void> {
  return del<void>(`/api/NodeRegistration/token/${token}`)
}

/**
 * 停用节点
 */
export function deactivateNode(nodeId: string): Promise<void> {
  return post<void>(`/api/Node/${nodeId}/deactivate`)
}

/**
 * 删除节点
 */
export function deleteNode(nodeId: string): Promise<void> {
  return del<void>(`/api/Node/${nodeId}`)
}
